From 739ab8548d1d59a9b10fa6ec6a077ddf0ea8c206 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Thu, 12 Jan 2012 19:00:39 +0100 Subject: [PATCH] Add gtk_ui_manager_add_ui_from_resource This is a helper function to easily add ui from resource files. --- gtk/gtkuimanager.c | 35 +++++++++++++++++++++++++++++++++++ gtk/gtkuimanager.h | 3 +++ 2 files changed, 38 insertions(+) diff --git a/gtk/gtkuimanager.c b/gtk/gtkuimanager.c index 82c638c4e2..1e644d29ef 100644 --- a/gtk/gtkuimanager.c +++ b/gtk/gtkuimanager.c @@ -2001,6 +2001,41 @@ gtk_ui_manager_add_ui_from_file (GtkUIManager *manager, return res; } +/** + * gtk_ui_manager_add_ui_from_resource: + * @manager: a #GtkUIManager object + * @resource_path: the resource path of the file to parse + * @error: return location for an error + * + * Parses a resource file containing a UI definition and + * merges it with the current contents of @manager. + * + * Return value: The merge id for the merged UI. The merge id can be used + * to unmerge the UI with gtk_ui_manager_remove_ui(). If an error occurred, + * the return value is 0. + * + * Since: 3.4 + **/ +guint +gtk_ui_manager_add_ui_from_resource (GtkUIManager *manager, + const gchar *resource_path, + GError **error) +{ + GBytes *data; + guint res; + + g_return_val_if_fail (GTK_IS_UI_MANAGER (manager), 0); + + data = g_resources_lookup_data (resource_path, 0, error); + if (data == NULL) + return 0; + + res = add_ui_from_string (manager, g_bytes_get_data (data, NULL), g_bytes_get_size (data), FALSE, error); + g_bytes_unref (data); + + return res; +} + /** * gtk_ui_manager_add_ui: * @manager: a #GtkUIManager diff --git a/gtk/gtkuimanager.h b/gtk/gtkuimanager.h index d07ccccbdb..8573f2aeca 100644 --- a/gtk/gtkuimanager.h +++ b/gtk/gtkuimanager.h @@ -152,6 +152,9 @@ guint gtk_ui_manager_add_ui_from_string (GtkUIManager *manage guint gtk_ui_manager_add_ui_from_file (GtkUIManager *manager, const gchar *filename, GError **error); +guint gtk_ui_manager_add_ui_from_resource(GtkUIManager *manager, + const gchar *resource_path, + GError **error); void gtk_ui_manager_add_ui (GtkUIManager *manager, guint merge_id, const gchar *path, -- 2.30.2